<!DOCTYPE html>
<html>
<head>
    

    

    



    <meta charset="utf-8">
    
    
    
    
    <title>lemon-echo微服务架构说明 | Wei Echo | 高效稳定 · 简洁易用 · 灵活扩展</title>
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    
    <meta name="theme-color" content="#3F51B5">
    
    
    <meta name="keywords" content="微服务,java,架构,lemon-echo">
    <meta name="description" content="高效稳定 · 简洁易用 · 灵活扩展项目地址：lemon-echo微服务架构 weiecho微服务架构是基于springcloud + consul的微服务框架设计体系，以人员、时效、成本、品质为基础设计思路，极度适用于小中型开发设计团队，可通过简单调整扩展支持中大型开发设计团队。框架设计过程中整合实际项目经验，利用接口化、消息队列、模块化、服务化、异步化等技术方案保障服务稳定性和可扩展性。 根据">
<meta property="og:type" content="article">
<meta property="og:title" content="lemon-echo微服务架构说明">
<meta property="og:url" content="https://github.com/weiecho/2020/07/07/doc_1114/index.html">
<meta property="og:site_name" content="Wei Echo">
<meta property="og:description" content="高效稳定 · 简洁易用 · 灵活扩展项目地址：lemon-echo微服务架构 weiecho微服务架构是基于springcloud + consul的微服务框架设计体系，以人员、时效、成本、品质为基础设计思路，极度适用于小中型开发设计团队，可通过简单调整扩展支持中大型开发设计团队。框架设计过程中整合实际项目经验，利用接口化、消息队列、模块化、服务化、异步化等技术方案保障服务稳定性和可扩展性。 根据">
<meta property="og:locale" content="zh_CN">
<meta property="article:published_time" content="2020-07-07T03:16:35.000Z">
<meta property="article:modified_time" content="2020-07-09T02:53:24.144Z">
<meta property="article:author" content="Wei Echo">
<meta property="article:tag" content="微服务">
<meta property="article:tag" content="java">
<meta property="article:tag" content="架构">
<meta property="article:tag" content="lemon-echo">
<meta name="twitter:card" content="summary">
    
        <link rel="alternate" type="application/atom+xml" title="Wei Echo" href="/atom.xml">
    
    <link rel="shortcut icon" href="/favicon.ico">
    <link rel="stylesheet" href="/css/style.css?v=1.7.2">
    <script>window.lazyScripts=[]</script>

    <!-- custom head -->
    

<meta name="generator" content="Hexo 4.2.1"></head>

<body>
    <div id="loading" class="active"></div>

    <aside id="menu"  >
  <div class="inner flex-row-vertical">
    <a href="javascript:;" class="header-icon waves-effect waves-circle waves-light" id="menu-off">
        <i class="icon icon-lg icon-close"></i>
    </a>
    <div class="brand-wrap" style="background-image:url(/img/brand.jpg)">
      <div class="brand">
        <a href="/" class="avatar waves-effect waves-circle waves-light">
          <img src="/img/avatar.jpg">
        </a>
        <hgroup class="introduce">
          <h5 class="nickname">Wei Echo</h5>
          <a href="mailto:lonyee@live.com" title="lonyee@live.com" class="mail">lonyee@live.com</a>
        </hgroup>
      </div>
    </div>
    <div class="scroll-wrap flex-col">
      <ul class="nav">
        
            <li class="waves-block waves-effect">
              <a href="/"  >
                <i class="icon icon-lg icon-home"></i>
                主页
              </a>
            </li>
        
            <li class="waves-block waves-effect">
              <a href="/categories/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0"  >
                <i class="icon icon-lg icon-mortar-board"></i>
                学习笔记
              </a>
            </li>
        
            <li class="waves-block waves-effect">
              <a href="/categories/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB"  >
                <i class="icon icon-lg icon-puzzle-piece"></i>
                经验分享
              </a>
            </li>
        
            <li class="waves-block waves-effect">
              <a href="/categories/%E5%B8%B8%E7%94%A8%E5%B7%A5%E5%85%B7"  >
                <i class="icon icon-lg icon-cubes"></i>
                常用工具
              </a>
            </li>
        
            <li class="waves-block waves-effect">
              <a href="https://github.com/weiecho" target="_blank" >
                <i class="icon icon-lg icon-github"></i>
                我的项目
              </a>
            </li>
        
            <li class="waves-block waves-effect">
              <a href="/categories/%E5%BC%80%E6%BA%90%E6%96%87%E6%A1%A3"  >
                <i class="icon icon-lg icon-gbp"></i>
                开源文档
              </a>
            </li>
        
            <li class="waves-block waves-effect">
              <a href="/archives"  >
                <i class="icon icon-lg icon-archives"></i>
                文章列表
              </a>
            </li>
        
            <li class="waves-block waves-effect">
              <a href="/links"  >
                <i class="icon icon-lg icon-link"></i>
                友情链接
              </a>
            </li>
        
      </ul>
    </div>
  </div>
</aside>

    <main id="main">
        <header class="top-header" id="header">
    <div class="flex-row">
        <a href="javascript:;" class="header-icon waves-effect waves-circle waves-light on" id="menu-toggle">
          <i class="icon icon-lg icon-navicon"></i>
        </a>
        <div class="flex-col header-title ellipsis">lemon-echo微服务架构说明</div>
        
        <div class="search-wrap" id="search-wrap">
            <a href="javascript:;" class="header-icon waves-effect waves-circle waves-light" id="back">
                <i class="icon icon-lg icon-chevron-left"></i>
            </a>
            <input type="text" id="key" class="search-input" autocomplete="off" placeholder="输入感兴趣的关键字">
            <a href="javascript:;" class="header-icon waves-effect waves-circle waves-light" id="search">
                <i class="icon icon-lg icon-search"></i>
            </a>
        </div>
        
        
        <a href="javascript:;" class="header-icon waves-effect waves-circle waves-light" id="menuShare">
            <i class="icon icon-lg icon-share-alt"></i>
        </a>
        
    </div>
</header>
<header class="content-header post-header">

    <div class="container fade-scale">
        <h1 class="title">lemon-echo微服务架构说明</h1>
        <h5 class="subtitle">
            
                <time datetime="2020-07-07T03:16:35.000Z" itemprop="datePublished" class="page-time">
  2020-07-07
</time>


	<ul class="article-category-list"><li class="article-category-list-item"><a class="article-category-list-link" href="/categories/%E5%BC%80%E6%BA%90%E6%96%87%E6%A1%A3/">开源文档</a></li></ul>

            
        </h5>
    </div>
    
    


</header>


<div class="container body-wrap">
    

<article id="post-doc_1114"
  class="post-article article-type-post fade" itemprop="blogPost">

    <div class="post-card">
        <h1 class="post-card-title">lemon-echo微服务架构说明</h1>
        <div class="post-meta">
            <time class="post-time" title="2020-07-07 11:16:35" datetime="2020-07-07T03:16:35.000Z"  itemprop="datePublished">2020-07-07</time>

            
	<ul class="article-category-list"><li class="article-category-list-item"><a class="article-category-list-link" href="/categories/%E5%BC%80%E6%BA%90%E6%96%87%E6%A1%A3/">开源文档</a></li></ul>



            

        </div>
        <div class="post-content" id="post-content" itemprop="postContent">
            <h6 id="高效稳定-·-简洁易用-·-灵活扩展"><a href="#高效稳定-·-简洁易用-·-灵活扩展" class="headerlink" title="高效稳定 · 简洁易用 · 灵活扩展"></a><code>高效稳定 · 简洁易用 · 灵活扩展</code></h6><p>项目地址：<a href="https://github.com/weiecho/lemon-echo">lemon-echo微服务架构</a></p>
<p>weiecho微服务架构是基于springcloud + consul的微服务框架设计体系，以人员、时效、成本、品质为基础设计思路，极度适用于小中型开发设计团队，可通过简单调整扩展支持中大型开发设计团队。框架设计过程中整合实际项目经验，利用接口化、消息队列、模块化、服务化、异步化等技术方案保障服务稳定性和可扩展性。</p>
<p>根据互联网产品多年经验分析，我们的产品无论从任何角度为切入点，最终都希望完成用户支付-服务的闭环思维，在weiecho的架构体系设计时期直接将用户、帐户、商品、订单、交易、消息作为功能架构的基础模块体系，从而结合实际项目体系完成整体微服务体系搭建，以协助团队快速集成完善的开发结构体系。</p>
<p>依托功能预代入模式的完善架构体系思想，后续功能开发仅需对相应业务逻辑进行部分调整、增加对应的服务模块（如IM、聊天室等），利用类似二次开发方式极大降低开发团队的技术壁垒，降低微服务开发及治理难度，结合代码快速生成器可以在10分钟内完成简单功能开发，非常快发迭代开发的技术团队，尤其适用于50人以下的技术开发团队。</p>
<h2 id="规划架构说明"><a href="#规划架构说明" class="headerlink" title="规划架构说明"></a>规划架构说明</h2><p>weiecho架构考虑多设备、多应用场景，从应用入口区分了各类应用入口的控制和管理，在功能方面分为应用入口、服务网关、核心服务、公共模块、风控模块、运营管理后台、数据支持等模块。</p>
<h4 id="应用入口"><a href="#应用入口" class="headerlink" title="应用入口"></a>应用入口</h4><p>应用入口可以接受APP、WEB、小程序、A应用、B应用、外部应用等应用接入，利用服务的项目管理功能可以实现无限扩展的应用接入方式，从而达到类中台的服务架构体系。</p>
<h4 id="服务网关"><a href="#服务网关" class="headerlink" title="服务网关"></a>服务网关</h4><p>服务网关主要考虑安全、流控、风控等风险因素，接入参数验证、身份验证、路由策略、流控策略、风控验证等安全模块，保障整体服务安全稳定运行。</p>
<h4 id="核心服务"><a href="#核心服务" class="headerlink" title="核心服务"></a>核心服务</h4><p>核心服务为项目主要业务服务，目前规划分为聚合服务、用户服务、帐户服务、商品服务、订单服务、交易服务、对账服务、清算服务、消息服务、授权服务、营销服务、售后服务等。市场运营需求可以增加推广服务、广告服务，即时沟通类需求可以扩展IM服务，直播类需求可以扩展直播服务，打赏服务等。</p>
<h4 id="公共模块"><a href="#公共模块" class="headerlink" title="公共模块"></a>公共模块</h4><p>公共模块作为业务的支持服务，主要包含授权服务、报警服务、消息服务、单号生成器、注册中心、配置中心、定时任务、分布式锁、分库分表模块，服务成熟后可逐步考虑接入生物识别、内容识别、数据服务等模块。</p>
<h4 id="风控模块"><a href="#风控模块" class="headerlink" title="风控模块"></a>风控模块</h4><p>风控模块为服务安全等核心领域，包含安全认证、资质审查、用户分级、黑白名单、风险预警、风险处置、支付风险、信用风险、征信相关等，可以根据需要完善该模块内容保障整体服务等安全性。</p>
<h4 id="运营管理后台"><a href="#运营管理后台" class="headerlink" title="运营管理后台"></a>运营管理后台</h4><p>运营管理后台为管理整个服务的入口，通过精确的权限管控分配用户是使用功能，对系统用户、帐户、订单、交易、对账、投诉等信息的查看和维护操作。</p>
<h4 id="数据支持"><a href="#数据支持" class="headerlink" title="数据支持"></a>数据支持</h4><p>数据支持分为内部数据支持和三方支持，其中内部数据支持包含mysql、redis、rabbit mq、promethes、elk、innerdb等，三方支持包含短信服务、消息服务、OSS文件存储、支付通道、实名认证、生物检测等功能。</p>
<h2 id="部署架构说明"><a href="#部署架构说明" class="headerlink" title="部署架构说明"></a>部署架构说明</h2><p>用户访问APP、WEB、H5页面通过LBS算法调用到最佳的nginx服务器，nginx通过规则转发调用到指定的服务或服务网关，gatway经过鉴权、风控等安全校验后通过consul注册中心LB路由到指定的业务服务，业务服务根据需要调用对应的数据支持端、RPC服务短信或第三方服务端，完成业务功能后返回对应的数据。</p>
<p>整个部署架构分为入口访问组、核心服务组、基础支撑组和服务监控组。</p>
<p>1、LBS域名指向服务域名，开通https、防ddocs等安全性功能。</p>
<p>2、入口访问组包含nginx、potal web、activity web、gateway服务，nginx需要开通外网流量权限，gateway需打通与核心业务组网段调用，potal web和activity web为前端网页服务，可视情况与nginx服务同机器部署或单独部署。</p>
<p>3、核心服务组根据各服务压测和预估QPS状况，部署相应量级的服务节点，为保障服务高可用，每个服务至少部署两个节点。</p>
<p>4、基础支撑组需开放核心业务组网络相互访问，部署consul注册中心集群，consul集群请独立部署并至少部署3个server节点和2+个client节点，DB至少保证主从节点配置，rabbitmq集群使用镜像模式保障服务的高可用，redis根据服务需要主从、集群部署，其他支持服务根据需要部署相应套件。</p>
<p>服务监控组需开放核心业务组网络相互访问，zabbix、prometheus、zipkin server根据服务需要部署相应节点套件，ELK部署至少3个master节点和3个data节点，数据节点建议内存30G，master节点建议10G，聚合节点等根据需要配置，日志类索引根据需要设置n*3个Primaries（如无特殊需要Replicas设置为0），日志索引名称按天存储。日志收集采用filebeat -&gt; kafka -&gt; logstash -&gt; elasticsearch套件，logstash路由pipeline简化配置和服务管理。</p>
<h2 id="控制中心模块"><a href="#控制中心模块" class="headerlink" title="控制中心模块"></a>控制中心模块</h2><h4 id="服务网关-gateway"><a href="#服务网关-gateway" class="headerlink" title="服务网关 gateway"></a>服务网关 gateway</h4><p>服务网关基于springcloud原生gateway实现，为整个微服务架构提供简单、有效和统一的API路由管理方式，结合服务的授权体系、风控体系、sentinel流控体系、swagger接口文档等方便统一的管理微服务体系，同时保障服务的安全稳定运行。</p>
<h4 id="流控后台-sentinel-dashboard"><a href="#流控后台-sentinel-dashboard" class="headerlink" title="流控后台 sentinel-dashboard"></a>流控后台 sentinel-dashboard</h4><p>sentinel流控后台是面向微服务的轻量级流量控制框架，从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。</p>
<h4 id="任务调度-xxl-job-admin"><a href="#任务调度-xxl-job-admin" class="headerlink" title="任务调度 xxl-job-admin"></a>任务调度 xxl-job-admin</h4><p>xxl-job任务调度中心是一个轻量级分布式任务调度平台，其核心设计目标是开发迅速、学习简单、轻量级、易扩展。</p>
<h4 id="链路追踪-zipkin"><a href="#链路追踪-zipkin" class="headerlink" title="链路追踪 zipkin"></a>链路追踪 zipkin</h4><p>zipkin链路追踪基于 Google Dapper 实现，用来收集各个服务器上请求链路的跟踪数据，并通过提供的 REST API 接口来辅助查询跟踪数据以实现对分布式系统的监控程序，从而及时发现系统中的存在的风险性问题。</p>
<h2 id="公共组建模块"><a href="#公共组建模块" class="headerlink" title="公共组建模块"></a>公共组建模块</h2><h4 id="公共配置-configurator"><a href="#公共配置-configurator" class="headerlink" title="公共配置 configurator"></a>公共配置 configurator</h4><p>公共配置模块整理和优化了服务的常用配置，采用配置但不启用的方式进行标准化处理，服务仅需继承相应类并加上注解@Configuration就可以启用功能。</p>
<h4 id="公共资源-framework"><a href="#公共资源-framework" class="headerlink" title="公共资源 framework"></a>公共资源 framework</h4><p>公共资源模块聚合类一些常用但公共处理类，增强服务语法的统一性和功能的准确性，减少大量重复造轮子的现象。</p>
<h4 id="序列号组件-serialno"><a href="#序列号组件-serialno" class="headerlink" title="序列号组件 serialno"></a>序列号组件 serialno</h4><p>序列号生成组件能够自动产生指定功能的递增序列号，采用服务独立自主管理序列号的方式，降低使用独立序列号服务的耦合性，采用redis作为预生成序列号池缓存区，加速服务的ID获取的处理速度。</p>
<h4 id="消息组件封装-rabbit-mq"><a href="#消息组件封装-rabbit-mq" class="headerlink" title="消息组件封装 rabbit-mq"></a>消息组件封装 rabbit-mq</h4><p>消息组件封装默认封装的是rabbit的topic模式，结合延迟插件默认生成普通topic交换机和延迟队列交换机，在生产端调用发送消息是是否为延迟消息，消费配置queue时选择是否为延迟队列。一般情况下topic模式+延迟队列能够完全满足服务的各种消息需求。</p>
<h4 id="分布式锁组件-distribution-lock"><a href="#分布式锁组件-distribution-lock" class="headerlink" title="分布式锁组件 distribution-lock"></a>分布式锁组件 distribution-lock</h4><p>分布式锁组件提供了分布式服务锁的功能，采用redis作为锁的计算核心，可以直接在方法上注解声明锁，同时采用注解方法参数作为降低锁粒度，从而更加灵活完善的支撑业务功能。</p>
<h4 id="分库分表组件-sharding-db"><a href="#分库分表组件-sharding-db" class="headerlink" title="分库分表组件 sharding-db"></a>分库分表组件 sharding-db</h4><p>分库分表组件封装了sharding-jdbc作为功能内核，调整优化了配置方式和支持类型，可在大量不改变配置文件的状况扩展出单库数据源、主从数据源、分库数据源三种配置模式，极大的方便服务升级改造。</p>
<h4 id="流控降级组件-sentinel-client"><a href="#流控降级组件-sentinel-client" class="headerlink" title="流控降级组件 sentinel-client"></a>流控降级组件 sentinel-client</h4><p>流控降级组件封装了sentinel作为功能内核，调整优化了分布式配置存取、实时监控数据持久存储和流控熔断异常处理逻辑，可以实时查看服务状况、动态调整服务的熔断或流控阈值，结合流控熔断监控报警实时保障服务的安全稳定。</p>
<h2 id="标准服务结构"><a href="#标准服务结构" class="headerlink" title="标准服务结构"></a>标准服务结构</h2><p>weiecho标准服务包含xxx-app（服务启动入口）、xxx-core（业务功能核心）、xxx-enum（服务全局枚举）、xxx-job（定时任务包）、xxx-rpc（rpc服务接口SDK）模块，考虑初期业务量、维护人员、服务维护难度及大部分微服务功能等状况，标准服务结构采用单服务聚合部署方式，降低开发维护难度，加速服务业务功能迭代开发上线。</p>
<p>本框架为保障服务接口的安全及一致性，利用强约束的方式保障所有问题暴露在上线部署前，约定服务提供方编写远程调用接口SDK提供给调用方。</p>
<h3 id="模块继承规则："><a href="#模块继承规则：" class="headerlink" title="模块继承规则："></a>模块继承规则：</h3><blockquote>
<p>1、xxx-app可引入xxx-core、xxx-job、xxx-rpc模块；</p>
<p>2、xxx-core可引入xxx-enum模块，支撑业务核心功能模块，可服务业务量状况拆分出event（MQ事件）模块走独立服务入口；</p>
<p>3、xxx-job根据需要使用xxx-app服务入口或独立服务走任务服务入口；</p>
<p>4、xxx-rpc可引入xxx-enum模块，也可以根据需要使用xxx-app服务入口或独立服务走任务服务入口。</p>
</blockquote>
<h4 id="服务启动入口-xxx-app"><a href="#服务启动入口-xxx-app" class="headerlink" title="服务启动入口 xxx-app"></a>服务启动入口 xxx-app</h4><p>xxxApplication.java为服务启动入口类，主要包含springboot服务启动main方法和部分启动注解；</p>
<p>cn.echo.xxx.config为服务配置包，主要包含服务初始化各项配置类，如：database、redis、cache、mq、mvc、job等配置；</p>
<p>cn.echo.xxx.controller为接口控制包，包含api（业务接口）、portal（后台接口）、rpc（rpc接口）控制实现类，其中rpc为继承xxx-rpc模块等实现类；</p>
<p>cn.echo.xxx.execption为服务异常处理包，默认包含GlobalExceptionHandler继承实现全局异常处理类cn.echo.framework.response.DefaultGlobalExceptionHandler。</p>
<h4 id="业务功能核心-xxx-core"><a href="#业务功能核心-xxx-core" class="headerlink" title="业务功能核心 xxx-core"></a>业务功能核心 xxx-core</h4><p>cn.echo.xxx.core.dao为数据处理包，主要包含mybatis调用数据源接口类；</p>
<p>cn.echo.xxx.core.entity为数据实体包，主要包含数据库表对应字段实体类；</p>
<p>cn.echo.xxx.core.pojo为业务实体包，主要为业务上下文封装需要的相关实体类；</p>
<p>cn.echo.xxx.core.event为MQ事件包，主要包含constant（常量）、receiver（接收处理）、sender（发送处理），其中constant主要包含queue、routing key常量定义；</p>
<p>cn.echo.xxx.core.service为业务逻辑接口包，主要定义业务逻辑功能接口，impl为逻辑接口的实现类。</p>
<h4 id="服务全局枚举-xxx-enum"><a href="#服务全局枚举-xxx-enum" class="headerlink" title="服务全局枚举 xxx-enum"></a>服务全局枚举 xxx-enum</h4><p>cn.echo.xxx.em.enums为全局枚举包，主要配合业务需要定义各类枚举；</p>
<p>cn.echo.xxx.em.response为全局服务响应码包，主要特殊业务状况下返回的信息提示码（警告、异常等），此异常码在服务创建时统一分配前缀，各服务维护自己的异常码，异常码类继承自框架类cn.echo.framework.response.ResultCode。</p>
<h4 id="定时任务包-xxx-job"><a href="#定时任务包-xxx-job" class="headerlink" title="定时任务包 xxx-job"></a>定时任务包 xxx-job</h4><p>cn.echo.xxx.job为定时任务实现包，利用xxljob实现任务调度工作，根据最新2.2.0版本实现，在方法体注解@XxlJob(“xxxHandler”)并按照官方语法即可完成任务开发，结合后台配置规则实现动态任务调度管理。</p>
<h4 id="远程调用接口SDK-xxx-rpc"><a href="#远程调用接口SDK-xxx-rpc" class="headerlink" title="远程调用接口SDK xxx-rpc"></a>远程调用接口SDK xxx-rpc</h4><p>cn.echo.xxx.rpc.client远程调用SDK接口包，用于定义FeignClient提供给调用方的接口；</p>
<p>cn.echo.xxx.rpc.dto远程调用SDK接口实体包，主要为SDK接口上下文封装需要的相关实体类。</p>

        </div>

        <blockquote class="post-copyright">
    <!-- 
	
	-->
    <footer>
        <a href="https://github.com/weiecho">
            <img src="/img/avatar.jpg" alt="Wei Echo">
            Wei Echo
        </a>
    </footer>
</blockquote>

        
<div class="page-reward">
    <a id="rewardBtn" href="javascript:;" class="page-reward-btn waves-effect waves-circle waves-light">赏</a>
</div>



        <div class="post-footer">
            
	<ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/java/" rel="tag">java</a></li><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/lemon-echo/" rel="tag">lemon-echo</a></li><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/%E5%BE%AE%E6%9C%8D%E5%8A%A1/" rel="tag">微服务</a></li><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/%E6%9E%B6%E6%9E%84/" rel="tag">架构</a></li></ul>


            
<div class="page-share-wrap">
    

<div class="page-share" id="pageShare">
    <ul class="reset share-icons">
      <li>
        <a class="weibo share-sns" target="_blank" href="http://service.weibo.com/share/share.php?url=https://github.com/weiecho/2020/07/07/doc_1114/&title=《lemon-echo微服务架构说明》 — Wei Echo&pic=https://github.com/weiecho/img/avatar.jpg" data-title="微博">
          <i class="icon icon-weibo"></i>
        </a>
      </li>
      <li>
        <a class="weixin share-sns wxFab" href="javascript:;" data-title="微信">
          <i class="icon icon-weixin"></i>
        </a>
      </li>
      <li>
        <a class="qq share-sns" target="_blank" href="http://connect.qq.com/widget/shareqq/index.html?url=https://github.com/weiecho/2020/07/07/doc_1114/&title=《lemon-echo微服务架构说明》 — Wei Echo&source=致力于中小型技术团队高效稳定的开发框架，全力打造简洁易用、灵活扩展的技术团队解决方案" data-title=" QQ">
          <i class="icon icon-qq"></i>
        </a>
      </li>
      <li>
        <a class="facebook share-sns" target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=https://github.com/weiecho/2020/07/07/doc_1114/" data-title=" Facebook">
          <i class="icon icon-facebook"></i>
        </a>
      </li>
      <li>
        <a class="twitter share-sns" target="_blank" href="https://twitter.com/intent/tweet?text=《lemon-echo微服务架构说明》 — Wei Echo&url=https://github.com/weiecho/2020/07/07/doc_1114/&via=https://github.com/weiecho" data-title=" Twitter">
          <i class="icon icon-twitter"></i>
        </a>
      </li>
      <li>
        <a class="google share-sns" target="_blank" href="https://plus.google.com/share?url=https://github.com/weiecho/2020/07/07/doc_1114/" data-title=" Google+">
          <i class="icon icon-google-plus"></i>
        </a>
      </li>
    </ul>
 </div>



    <a href="javascript:;" id="shareFab" class="page-share-fab waves-effect waves-circle">
        <i class="icon icon-share-alt icon-lg"></i>
    </a>
</div>



        </div>
    </div>

    
<nav class="post-nav flex-row flex-justify-between">
  
    <div class="waves-block waves-effect prev">
      <a href="/2020/07/09/doc_1115/" id="post-prev" class="post-nav-link">
        <div class="tips"><i class="icon icon-angle-left icon-lg icon-pr"></i> Prev</div>
        <h4 class="title">lemon-echo模块划分原则</h4>
      </a>
    </div>
  

  
    <div class="waves-block waves-effect next">
      <a href="/2020/07/02/stu_1117/" id="post-next" class="post-nav-link">
        <div class="tips">Next <i class="icon icon-angle-right icon-lg icon-pl"></i></div>
        <h4 class="title">Sentinel流控降级原则</h4>
      </a>
    </div>
  
</nav>



    




















</article>

<div id="reward" class="page-modal reward-lay">
    <a class="close" href="javascript:;"><i class="icon icon-close"></i></a>
    <h3 class="reward-title">
        <i class="icon icon-quote-left"></i>
        谢谢您的支持~
        <i class="icon icon-quote-right"></i>
    </h3>
    <div class="reward-content">
        
        <div class="reward-code">
            <img id="rewardCode" src="/img/wechat.png" alt="打赏二维码">
        </div>
        
        <label class="reward-toggle">
            <input id="rewardToggle" type="checkbox" class="reward-toggle-check"
                data-wechat="/img/wechat.png" data-alipay="/img/alipay.png">
            <div class="reward-toggle-ctrol">
                <span class="reward-toggle-item wechat">微信</span>
                <span class="reward-toggle-label"></span>
                <span class="reward-toggle-item alipay">支付宝</span>
            </div>
        </label>
        
    </div>
</div>



</div>

        <footer class="footer">
    <!-- <div class="top">
        

        <p>
            
                <span><a href="/atom.xml" target="_blank" class="rss" title="rss"><i class="icon icon-lg icon-rss"></i></a></span>
            
            <span>博客内容遵循 <a rel="license noopener" href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh" target="_blank">知识共享 署名 - 非商业性 - 相同方式共享 4.0 国际协议</a></span>
        </p>
    </div> -->
    <div class="bottom">
        <p><span>Copyright &copy; 2017 - 2020</span>
            <span>
                
                Wei Echo All Rights Reserved
            </span>
        </p>
    </div>
</footer>

    </main>
    <div class="mask" id="mask"></div>
<a href="javascript:;" id="gotop" class="waves-effect waves-circle waves-light"><span class="icon icon-lg icon-chevron-up"></span></a>



<div class="global-share" id="globalShare">
    <ul class="reset share-icons">
      <li>
        <a class="weibo share-sns" target="_blank" href="http://service.weibo.com/share/share.php?url=https://github.com/weiecho/2020/07/07/doc_1114/&title=《lemon-echo微服务架构说明》 — Wei Echo&pic=https://github.com/weiecho/img/avatar.jpg" data-title="微博">
          <i class="icon icon-weibo"></i>
        </a>
      </li>
      <li>
        <a class="weixin share-sns wxFab" href="javascript:;" data-title="微信">
          <i class="icon icon-weixin"></i>
        </a>
      </li>
      <li>
        <a class="qq share-sns" target="_blank" href="http://connect.qq.com/widget/shareqq/index.html?url=https://github.com/weiecho/2020/07/07/doc_1114/&title=《lemon-echo微服务架构说明》 — Wei Echo&source=致力于中小型技术团队高效稳定的开发框架，全力打造简洁易用、灵活扩展的技术团队解决方案" data-title=" QQ">
          <i class="icon icon-qq"></i>
        </a>
      </li>
      <li>
        <a class="facebook share-sns" target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=https://github.com/weiecho/2020/07/07/doc_1114/" data-title=" Facebook">
          <i class="icon icon-facebook"></i>
        </a>
      </li>
      <li>
        <a class="twitter share-sns" target="_blank" href="https://twitter.com/intent/tweet?text=《lemon-echo微服务架构说明》 — Wei Echo&url=https://github.com/weiecho/2020/07/07/doc_1114/&via=https://github.com/weiecho" data-title=" Twitter">
          <i class="icon icon-twitter"></i>
        </a>
      </li>
      <li>
        <a class="google share-sns" target="_blank" href="https://plus.google.com/share?url=https://github.com/weiecho/2020/07/07/doc_1114/" data-title=" Google+">
          <i class="icon icon-google-plus"></i>
        </a>
      </li>
    </ul>
 </div>


<div class="page-modal wx-share" id="wxShare">
    <a class="close" href="javascript:;"><i class="icon icon-close"></i></a>
    <p>扫一扫，分享到微信</p>
    <img src="" alt="微信分享二维码">
</div>




    <script src="//cdn.bootcss.com/node-waves/0.7.4/waves.min.js"></script>
<script>
var BLOG = { ROOT: '/', SHARE: true, REWARD: true };


</script>

<script src="/js/main.min.js?v=1.7.2"></script>


<div class="search-panel" id="search-panel">
    <ul class="search-result" id="search-result"></ul>
</div>
<template id="search-tpl">
<li class="item">
    <a href="{path}" class="waves-block waves-effect">
        <div class="title ellipsis" title="{title}">{title}</div>
        <div class="flex-row flex-middle">
            <div class="tags ellipsis">
                {tags}
            </div>
            <time class="flex-col time">{date}</time>
        </div>
    </a>
</li>
</template>

<script src="/js/search.min.js?v=1.7.2" async></script>










</body>
</html>
